//
//  AppDelegate+Category.m
//  MyBaseProject
//
//  Created by 任波 on 2017/9/11.
//  Copyright © 2017年 任波. All rights reserved.
//

#import "AppDelegate+Category.h"
#import <AFNetworkActivityIndicatorManager.h>
#import <AFNetworkReachabilityManager.h>

typedef NS_ENUM(NSUInteger, BRNetworkStatus) {
    BRNetworkStatusUnknown,           // 未知网络
    BRNetworkStatusNotReachable,      // 无网络
    BRNetworkStatusReachableViaWWAN,  // 手机网络
    BRNetworkStatusReachableViaWiFi   // WIFI网络
};

/** 网络连接状态 */
static BRNetworkStatus _netStatus;

@implementation AppDelegate (Category)

#pragma mark - 配置网络状态监控
- (void)configNetworkStateMonitoring {
    // 打开状态栏的等待菊花
    [AFNetworkActivityIndicatorManager sharedManager].enabled = YES;
    // 开启网络监控
    [self openNetMonitoring];
}

#pragma mark - 开启网络监控
- (void)openNetMonitoring {
    // 1.创建网络监听管理者
    AFNetworkReachabilityManager *manager = [AFNetworkReachabilityManager sharedManager];
    // 2.设置网络状态改变后的处理
    [manager setReachabilityStatusChangeBlock:^(AFNetworkReachabilityStatus status) {
        // 当网络状态改变了, 就会调用这个block
        switch (status) {
            case AFNetworkReachabilityStatusUnknown:
                NSLog(@"当前网络未知");
                _netStatus = BRNetworkStatusUnknown;
                break;
            case AFNetworkReachabilityStatusNotReachable:
                NSLog(@"当前无网络");
                _netStatus = BRNetworkStatusNotReachable;
                break;
            case AFNetworkReachabilityStatusReachableViaWiFi:
                NSLog(@"当前是wifi环境");
                _netStatus = BRNetworkStatusReachableViaWiFi;
                break;
            case AFNetworkReachabilityStatusReachableViaWWAN:
                NSLog(@"当前是蜂窝网络");
                _netStatus = BRNetworkStatusReachableViaWWAN;
                break;
            default:
                break;
        }
    }];
    // 3.开启网络监听
    [manager startMonitoring];
}

/** 判断当前是否有网络连接 */
+ (BOOL)isNetwork {
    return [AFNetworkReachabilityManager sharedManager].reachable;
}

/** 判断当前是否是手机网络 */
+ (BOOL)isWWANNetwork {
    return [AFNetworkReachabilityManager sharedManager].reachableViaWWAN;
}

/** 判断当前是否是WIFI网络 */
+ (BOOL)isWiFiNetwork {
    return [AFNetworkReachabilityManager sharedManager].reachableViaWiFi;
}

@end
